package aop;/**
 * Created by burns.
 *
 * @author <a href="http://www.esoon-soft.com/">burns</a>
 * @date 2020/10/19 17:19
 */

import java.lang.reflect.InvocationTargetException;

/**
 * @Interface Interceptor
 * @Description TODO
 * @Author 35725
 * @DAte 2020/10/19 17:19
 * @Version 1.0
 **/
public interface Interceptor {
    public boolean before();

    //事后方法
    public void after();

    /**
     * ＊取代原有事件方法
     *
     * @param nvocat on 一回调参数，可以通过它的 proceed 方法 回调原有事件
     * @return 原有事件返回对象
     * 女＠ throws InvocationTargetException
     * @throws IllegalAccessException
     */
    public Object around(Invocation invocation)
            throws InvocationTargetException, IllegalAccessException;

    //是否返回方法 事件没有发生异常执行
    public void afterReturning();

    //事后异常方法 当事件发生异常后执行
    public void afterThrowing();

    //是否使 around 方法取代原有方法
    boolean useAround();
}
